package c07运行环境与常用类;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;

public class TestSystem重定向输入输出 {

	public static void main(String[] args) throws IOException {
		String s = "我和我的小伙伴们都惊呆了！";
		String fout = "sysout", ferr = "syserr";
		//先保存原来的标准输出和错误输出对象
		PrintStream out0 = System.err;
		PrintStream err0 = System.err;
		//新的标准输出和错误输出文件
		PrintStream out = new PrintStream(new FileOutputStream(fout));
		PrintStream err = new PrintStream(new FileOutputStream(ferr));
		//重定向标准输出到sysout文件
		System.setOut(out);
		//写入字符串
		System.err.println(fout + s);
		//重定向标准错误输出到syserr文件
		System.setErr(err);
		//写入字符串
		System.err.println(ferr + s);

		//重定向标准输入为fout文件
		System.setIn(new FileInputStream(fout));
		//用处理流包装标准输入流
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//再重定向标准输出
		System.setOut(out0);
		System.err.println(fout + "中的字符串：" + br.readLine());

		//重定向标准输入为fout文件
		System.setIn(new FileInputStream(ferr));
		//读入文件
		BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
		//再重定向标准错误输出
		System.setErr(err0);
		System.err.println(ferr + "中的字符串：" + br2.readLine());
	}

}
